package com.friends.design.mode.template.cook;

/**
 * @Author Zhao Tianhao
 * @Description 做饭 抽象类
 * @Date 2024/7/23 16:47
 */
public abstract class AbstractCooking {

	/**
	 * 模板方法 -> 规定实现流程
	 * 需要将模板方法设置为final 防止篡改流程
	 */
	final void make() {
		// 1. 选择食材
		selectIngredients();
		// 2. 选择灶具
		selectPan();
		// 3. 选择烹饪方式
		selectCookingWay();
	}

	/**
	 * 选择食材
	 */
	abstract void selectIngredients();

	/**
	 * 选择灶具
	 */
	abstract void selectPan();

	/**
	 * 选择烹饪方式
	 */
	abstract void selectCookingWay();
}
